1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5
6 namespace TwoStacksQueue
7 {
8 public class Program
9 {
10 public void Main(string[] args)
11 {
12 TwoStaksQueues twoStaksQueues = new TwoStaksQueues();
13
14 twoStaksQueues.Add(1);
15 twoStaksQueues.Add(2);
16 twoStaksQueues.Add(3);
17
18 Console.WriteLine(twoStaksQueues.Peek());
19
20 twoStaksQueues.Poll();
21
22 Console.WriteLine(twoStaksQueues.Peek());
23
24 Console.ReadLine();
25 }
26 public class TwoStaksQueues
27 {
28 public Stack<int> stacksPush;
29 public Stack<int> stackPop;
30 public TwoStaksQueues()
31 {
32 stackPop = new Stack<int>();
33 stacksPush = new Stack<int>();
34 }
35 public void Add(int newNumber)
36 {
37 stacksPush.Push(newNumber);
38 }
39
40 public int Poll()
41 {
42 if (stacksPush.Count() == 0 && stackPop.Count() == 0)
43 {
44
45 throw new ArgumentOutOfRangeException("DataStacks is Empty");
46 }
47 if (stackPop.Count() == 0)
48 {
49 while (stacksPush.Count() != 0)
50 {
51 stackPop.Push(stacksPush.Pop());
52 }
53 }
54 return stackPop.Pop();
55 }
56 public int Peek()
57 {
58 if (stacksPush.Count() == 0 && stackPop.Count() == 0)
59 {
60 throw new IndexOutOfRangeException("DataStacks is Empty");
61 }
62 if (stackPop.Count() == 0)
63 {
64 while (stacksPush.Count() != 0)
65 {
66 stackPop.Push(stacksPush.Pop());
67 }
68 }
69 return stackPop.Peek();
70
71 }
72 }
73 }
74 }